#include <bits/stdc++.h>

using namespace std;

const int maxn=505;
char str[maxn][maxn];
int f[2][maxn][maxn];
const int mod=1000000007;

inline int sum(const int &x,const int &y){return (x+y)%mod;}

int main(){
    int n;
    int p,q;
    p=1;q=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%s",str[i]+1);
    f[p][1][n]=(str[1][1]==str[n][n])?1:0;
    for(int i=3;i<=n+1;i++){
        swap(p,q);
        memset(f[p],0,sizeof(f[p]));
        for(int j=1;j<i;j++){
            int t=2*n+2-i;
            for(int k=t-n;k<=n;k++){
                if(str[j][i-j]==str[k][t-k]) f[p][j][k]=sum(sum(f[q][j][k],f[q][j-1][k]),sum(f[q][j-1][k+1],f[q][j][k+1]));
            }
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++) ans=sum(ans,f[p][i][i]);
    printf("%d\n",ans);
}
